home *** CD-ROM | disk | FTP | other *** search
- 100 REM MACTEP - MACINTOSH TERMINAL EMULATOR PROGRAM
- 110 REM MOUSE MENUS BY LOFTUS E. BECKER, JR. - CIS 70206,67
- 130 REM VERSION 1.87 - 6-JUN-84
- 134 REM PHONE NUMBER EDITOR AND AUTOLOGON BY
-
- 135 REM MICHAEL MCKAY, COMPUSERVE 70066,527
- 137 REM MERGING OF MACTEP VERSION 1.87 WITH AUTO.TEP
- 138 REM AND OTHER EDITING BY JIM ALIFF, COMPUSERVE 70045,1007
-
- 140 REM DENNIS F. BROTHERS - COMPUSERVE 70065,172 - MCI MAIL DBROTHERS
-
- 160 REM COPYRIGHT (C) 1984 - BROTHERS ASSOCIATES, WAYLAND MA
- 170 REM PERMISSION IS HEREBY GRANTED FOR PERSONAL, NON-COMMERCIAL
- 180 REM REPRODUCTION AND USE OF THIS PROGRAM, PROVIDED THAT THIS
- 190 REM NOTICE IS INCLUDED IN ANY COPY.
- 310 CLEAR, 27500,2048
- 320 CALL TEXTFONT(0): CALL TEXTSIZE (12): CALL TEXTFACE (1): CLS
- 330 CALL MOVETO (150,50): PRINT "AUTO MACTEP MOUSE 1.87"
- 335 CALL MOVETO(82,90):PRINT"BASED ON MACTEP V 1.87 BY DENNIS BROTHERS"
- 340 CALL MOVETO (128, 110): PRINT "MENUS BY LOFTUS E. BECKER, JR."
- 350 CALL MOVETO (118, 130): PRINT "EDITOR/AUTOLOG BY MICHAEL MCKAY"
- 355 CALL MOVETO(127,150):PRINT "MERGED AND EDITED BY JIM ALIFF"
- 360 CALL MOVETO (300, 250): PRINT "INITIALIZING. . . ."
- 380 DEFINT A-Z
- 430 BUFFERSIZE=4096
- 440 BUFLIM=BUFFERSIZE\4
- 460 FALSE=0: TRUE=-1
- 480 LF=10: LF$=CHR$(LF)
- 490 CR=13: CR$=CHR$(CR)
- 500 XON=17: XON$=CHR$(XON)
- 510 XOFF=19: XOFF$=CHR$(XOFF)
- 512 ESC=27: ESC$=CHR$(ESC)
- 515 PAGELENGTH$=CHR$(29)+"A@"+STRING$(116,64)+"C@"+STRING$(12,64)+"A@"+CHR$(30)
- 520 PRINTERON$= CHR$(27) + CHR$(68) + CHR$(128) + CHR$(0)+PAGELENGTH$
- 530 PRINTEROFF$ = CHR$(27) +"C"+CHR$(29)+"0"
- 550 OPTB$=CHR$(186): SHOPTB$=CHR$(245)
- 560 CMDD=4: CMDD$=CHR$(CMDD)
- 565 OPTR$=CHR$(168): SHOPTR$=CHR$(229)
- 570 OPTT$=CHR$(160): SHOPTT$=CHR$(230)
- 580 OPTX$=CHR$(197): SHOPTX$=CHR$(244)
- 590 GOOD1$="CONNECT"
- 600 BAD1$ = "ERROR": BAD2$ = "BUSY": BAD3$ = "NO CARRIER"
- 610 START! = TIMER: FINISH! = TIMER
- 630 AIN=-6: AOUT=-7
- 640 SB1=&H4000: SB15=&H8000: SB2=&HC000
- 650 PARNONE=&H0: PARODD=&H1000: PAREVEN=&H3000
- 660 DB5=&H0: DB6=&H800: DB7=&H400: DB8=&HC00
- 670 DUPLEX$=""
- 672 A!=0
- 673 AUTOLOG=0:XL=0
- 674 NOW=0
- 676 WHICHMENU=0:MENULINES=0
- 678 BLACK=0:SQUEAK=0
- 680 WHERE=0:INRANGE=0
- 682 TOP=0:BOTTOM=0
- 684 CHOICE=0
- 710 GOSUB 3230
- 1320 CALL TEXTFACE(0)
- 1330 CALL PENNORMAL: CALL SHOWPEN: CALL PENMODE(10)
- 1340 BR! = 300
- 1430 OPEN "COM1:" AS #1 LEN=BUFFERSIZE
- 1435 IF BR! <1200 THEN WIDTH 80 ELSE WIDTH 255
- 1440 WIDTH #1,255
- 1460 TC=INT((115200!/BR!)+.5)-2
- 1480 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
- 1490 PARAMLIST(24\2)=AIN
- 1500 PARAMLIST(26\2)=8
- 1510 PARAMLIST(28\2)=SB1+PARNONE+DB8+TC
- 1520 CALL CONTROL!(PARAM!)
- 1540 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
- 1550 PARAMLIST(24\2)=AIN
- 1560 PARAMLIST(26\2)=9
- 1570 PARAMLIST(28\2)=BUFFERH
- 1572 PARAMLIST(30\2)=BUFFERL
- 1574 PARAMLIST(32\2)=BUFFERSIZE
- 1580 CALL CONTROL!(PARAM!)
- 1590 GOSUB 7220
- 1790 GOTO 4220
- 1810 PRINT: PRINT: PRINT
- 1840 REM TERMINAL MODE
- 1842 ON ERROR GOTO 0
- 1845 CALL TEXTSIZE(9): CALL TEXTFONT(4)
- 1850 CALL OBSCURECURSOR
- 1870 CALL PENSIZE(4,1)
- 1880 XFLAG=FALSE
- 1890 CALL LINE(0,-4)
- 1900 IF LOC(1)=0 THEN GOTO 1960
- 1905 IF NOT RCVXFLAG THEN 1920
- 1910 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
- 1920 L$=INPUT$(LOC(1),#1)
- 1930 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
- 1940 IF TL<>0 THEN CALL LINE(0,4): PRINT LEFT$(L$,TL);: CALL LINE(0,-4)
- 1950 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
- 1960 C$=INKEY$
- 1970 IF ABS (MOUSE(0)) = 2 THEN 4220
- 1980 IF C$="" THEN GOTO 1900
- 1990 IF C$= CMDD$ THEN LCOPY:LPRINT PRINTEROFF$: GOTO 1900
- 2000 IF C$=OPTB$ OR C$=SHOPTB$ THEN CALL LINE(0,4): BASIC=TRUE : GOTO 2060
- 2010 IF C$=OPTR$ OR C$=SHOPTR$ THEN CALL LINE(0,4): BASIC=FALSE: GOTO 2060
- 2020 IF C$=OPTT$ OR C$=SHOPTT$ THEN CALL LINE(0,4): GOTO 2520
- 2030 CALL PENNORMAL: CALL SHOWPEN: CALL PENMODE(10): CALL PENSIZE(4,1)
- 2040 PRINT #1,C$;
- 2050 GOTO 1900
- 2060 CALL PENSIZE(6,1)
- 2090 XFLAG=FALSE: CRFLAG=TRUE: FLUSH=FALSE
- 2100 PRINT: PRINT "RECEIVE FILE NAME - "
- 2110 LINE INPUT " (P=PRINTER, C=CLIPBOARD, RETURN=ABORT): ",F$
- 2120 IF F$="" THEN GOTO 1840
- 2130 IF F$="C" OR F$="C" THEN F$="CLIP:"
- 2140 IF F$="P" OR F$="P" THEN F$="LPT1:"
- 2150 OPEN F$ FOR OUTPUT AS #2: WIDTH #2,255
- 2160 IF F$<>"LPT1:" AND F$<>"LPT1:" THEN GOTO 2190
- 2170 PRINT #2,PRINTERON$;
- 2180 REM
- 2190 CALL LINE(0,-2)
- 2200 QUIT=FALSE
- 2210 WHILE NOT QUIT
- 2220 IF LOC(1)=0 THEN GOTO 2360
- 2230 IF NOT RCVXFLAG THEN GOTO 2250
- 2240 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
- 2250 L$=INPUT$(LOC(1),#1)
- 2260 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
- 2270 IF TL=0 THEN GOTO 2350
- 2280 CALL LINE(0,2): PRINT LEFT$(L$,TL);: CALL LINE(0,-2)
- 2290 IF NOT BASIC THEN GOTO 2320
- 2300 CALL BPROC!(LP!,TLP!,CRFLAGP!,FLUSHP!)
- 2310 IF TL=0 THEN GOTO 2350
- 2320 IF NOT RCVXFLAG THEN GOTO 2340
- 2330 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
- 2340 PRINT #2,LEFT$(L$,TL);
- 2350 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
- 2360 C$=INKEY$
- 2370 IF C$="" THEN GOTO 2410
- 2380 IF C$=OPTB$ OR C$=SHOPTB$ THEN QUIT=TRUE: GOTO 2410
- 2390 IF C$=OPTR$ OR C$=SHOPTR$ THEN QUIT=TRUE: GOTO 2410
- 2400 PRINT #1,C$;
- 2410 WEND
- 2420 CALL LINE(0,2)
- 2430 IF F$<>"LPT1:" AND F$<>"LPT1:" THEN GOTO 2450
- 2440 PRINT #2,PRINTEROFF$
- 2450 CLOSE #2
- 2460 IF RIGHT$(F$,1)=":" THEN GOTO 2490
- 2470 IF BASIC THEN TYPEAPPL$="MSBAMSBA" ELSE TYPEAPPL$="TEXTMACA"
- 2480 GOSUB 8000
- 2490 PRINT: PRINT "RECEIVE ENDED": PRINT
- 2500 GOTO 1840
- 2520 REM TRANSMIT (UPLOAD) ASCII FILE
- 2540 CALL PENSIZE(2,1)
- 2550 XFLAG=FALSE
- 2560 PRINT: PRINT "TRANSMIT FILE NAME - "
- 2570 LINE INPUT " (C=CLIPBOARD, RETURN=ABORT): ",F$
- 2580 IF F$="" THEN GOTO 1840
- 2590 IF F$="C" OR F$="C" THEN F$="CLIP:"
- 2600 ON ERROR GOTO 3100
- 2610 OPEN F$ FOR INPUT AS #2
- 2620 ON ERROR GOTO 0
- 2630 PRINT "IF A PROMPT IS SPECIFIED, EACH LINE IS TRANSMITTED ONLY AFTER THE"
- 2640 PRINT " PROMPT CHARACTER IS RECEIVED FROM THE REMOTE OR TYPED ON THE KEY-"
- 2650 PRINT " BOARD (IF TYPED ON THE KEYBOARD, IT IS NOT SENT TO THE REMOTE)."
- 2660 LINE INPUT "PROMPT CHARACTER (RETURN FOR NONE): ",PROMPT$
- 2670 PRINT "USE X-ON/X-OFF TRANSMIT HANDSHAKING DURING UPLOAD?";
- 2680 LINE INPUT " (Y/N, RETURN=N): ",C$
- 2690 IF C$="Y" OR C$="Y" THEN OUTXENAB=1: GOSUB 7220
- 2700 REM
- 2710 CALL LINE(0,-6)
- 2720 QUIT=FALSE
- 2730 GOFLAG=PROMPT$=""
- 2740 WHILE NOT (EOF(2) OR QUIT)
- 2750 IF LOC(1)<>0 THEN GOTO 2860
- 2760 IF NOT GOFLAG THEN GOTO 2970
- 2770 LINE INPUT #2,XL$
- 2780 IF XL$="" THEN GOTO 2830
- 2790 PCNT=0
- 2800 FOR I=1 TO LEN(XL$): C$=MID$(XL$,I,1)
- 2810 IF C$=PROMPT$ THEN PCNT=PCNT+1
- 2820 PRINT #1,C$;: NEXT I
- 2830 PRINT #1,CR$;
- 2840 GOFLAG=PROMPT$=""
- 2850 IF LOC(1)=0 THEN GOTO 2970
- 2860 IF NOT RCVXFLAG THEN GOTO 2880
- 2870 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
- 2880 L$=INPUT$(LOC(1),#1)
- 2890 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
- 2900 IF TL=0 THEN GOTO 2960
- 2910 IF GOFLAG THEN GOTO 2950
- 2920 I=0
- 2930 I=INSTR(I+1,LEFT$(L$,TL),PROMPT$):IF I=0 THEN GOTO 2950
- 2940 PCNT=PCNT-1: GOFLAG=PCNT<0:IF NOT GOFLAG THEN GOTO 2930
- 2950 CALL LINE(0,6): PRINT LEFT$(L$,TL);: CALL LINE(0,-6)
- 2960 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
- 2970 C$=INKEY$
- 2980 IF C$="" THEN GOTO 3020
- 2990 IF C$=PROMPT$ THEN GOFLAG=TRUE: GOTO 3020
- 3000 IF C$=OPTT$ OR C$=SHOPTT$ THEN QUIT=TRUE: GOTO 3030
- 3010 PRINT #1,C$;
- 3020 IF LOC(1)<>0 THEN GOTO 2860
- 3030 WEND
- 3040 CALL LINE(0,6) ' ERASE THE CURSOR
- 3050 CLOSE #2 ' DONE WITH TRANSMIT FILE
- 3060 IF OUTXENAB<>0 THEN OUTXENAB=0: GOSUB 7220
- 3070 PRINT: PRINT "TRANSMIT ENDED": PRINT
- 3080 GOTO 1840
- 3100 PRINT: PRINT "COULDN'T OPEN FILE - RETURNING TO TERMINAL MODE.": PRINT
- 3110 RESUME 1840
- 3230 REM IMPORTANT THAT ALL VARIABLES BE REFERENCED BEFORE POINTERS SET
- 3260 DIM MLCODEARRAY(199)
- 3270 DIM XTABLEARRAY(127)
- 3280 DIM BUFFERARRAY(BUFFERSIZE/2)
- 3290 DIM PARAMLIST(39)
- 3300 I=0: MLLINE=0: MLCHK=0: MLL=0: MLS=0: ML$=""
- 3310 TL=0
- 3320 BR!=0: TC=0
- 3330 OUTXENAB=0
- 3340 L$="": LP!=0: C$="": XL$=""
- 3350 F$="": FL=0: FP!=0
- 3360 TYPEAPPL$=""
- 3370 BASIC=FALSE: XFLAG=FALSE: RCVXFLAG=TRUE: RCVXFLAG$="X-ON/X-OFF"
- 3380 CRFLAG=FALSE: FLUSH=FALSE
- 3390 GOFLAG=FALSE: PCNT=0: PROMPT$=""
- 3400 C=0
- 3410 QUIT=0
- 3430 MLCODE!=0
- 3440 CONTROL!=0
- 3450 TRANSLATE!=0
- 3460 BPROC!=0
- 3470 GETFILEINFO!=0
- 3480 SETFILEINFO!=0
- 3490 XTABLE!=0
- 3500 BUFFER!=0: BUFFERT!=0: BUFFERH=0: BUFFERL=0
- 3510 PARAM!=0
- 3520 TLP!=0: CRFLAGP!=0: FLUSHP!=0
- 3530 DIM MENU$(12)
- 3537 DIM PHONENUMBERS$(12,1)
- 3550 REM NO NEW VARIABLES MAY BE USED AFTER THIS POINT
- 3560 MLCODE!=VARPTR(MLCODEARRAY(0))
- 3570 XTABLE!=VARPTR(XTABLEARRAY(0))
- 3580 BUFFER!=VARPTR(BUFFERARRAY(0))
- 3590 BUFFERH=INT(BUFFER!/65536!): BUFFERT!=BUFFER!-(BUFFERH*65536!)
- 3600 IF BUFFERT!<32768! THEN BUFFERL=BUFFERT! ELSE BUFFERL=BUFFERT!-65536!
- 3610 PARAM!=VARPTR(PARAMLIST(0))
- 3620 LP!=VARPTR(L$): FP!=VARPTR(F$)
- 3630 TLP!=VARPTR(TL)
- 3640 CRFLAGP!=VARPTR(CRFLAG)
- 3650 FLUSHP!=VARPTR(FLUSH)
- 3680 RESTORE 9020
- 3700 READ ML$
- 3760 MLL=VAL("&H"+MID$(ML$,3,2)+MID$(ML$,1,2))
- 3770 MLS=VAL("&H"+MID$(ML$,7,2)+MID$(ML$,5,2))
- 3780 IF MLL=0 THEN GOTO 3850
- 3790 FOR I=0 TO MLL-1
- 3800 POKE MLCODE!+MLS+I,VAL("&H"+MID$(ML$,9+I*2,2))
- 3810 NEXT I
- 3820 MLLINE=MLLINE+10
- 3830 GOTO 3700
- 3850 CONTROL!=MLCODE!+MLCODEARRAY(0)
- 3860 TRANSLATE!=MLCODE!+MLCODEARRAY(1)
- 3870 BPROC!=MLCODE!+MLCODEARRAY(2)
- 3880 GETFILEINFO!=MLCODE!+MLCODEARRAY(3)
- 3890 SETFILEINFO!=MLCODE!+MLCODEARRAY(4)
- 3960 FOR I=0 TO 255:POKE XTABLE!+I,0:NEXT I
- 3970 FOR I=7 TO 13
- 3980 POKE XTABLE!+I,I: POKE XTABLE!+128+I,I
- 3990 NEXT I
- 4000 POKE XTABLE!+10,0: POKE XTABLE!+128+10,0
- 4010 FOR I=32 TO 126
- 4020 POKE XTABLE!+I,I: POKE XTABLE!+128+I,I
- 4030 NEXT I
- 4050 RETURN
- 4220 REM MAIN MENU ROUTINE
- 4230 CALL TEXTSIZE(12): CALL TEXTFONT(0)
- 4260 WHICHMENU = 1: GOSUB 4710
- 4270 ON CHOICE GOTO 4280, 5200, 4430, 4440, 4560, 4590, 4600, 5600, 4450, 4620
- 4280 REM AUTODIAL ROUTINE
- 4290 WHICHMENU = 2: GOSUB 6010
- 4300 I=1
- 4310 REM
- 4320 IF CHOICE = MENULINES THEN 4220
- 4325 IF CHOICE=(MENULINES-2) THEN CALL MOVETO(70,50+(15*MENULINES)) ELSE 4332
- 4327 PRINT "ENTER THE NUMBER TO DIAL:":PRINT PTAB(82) " ( <RETURN> = MENU )"
- 4330 CALL MOVETO(250,50+(15*MENULINES)):LINE INPUT "",F$
- 4331 IF F$="" THEN 4280 ELSE DUPLEX$="F0":GOTO 4350
- 4332 IF CHOICE = (MENULINES - 1) THEN FOR I=1 TO 4000:NEXT ELSE 4340
- 4334 PRINT #1,"+++" : FOR I=1 TO 20000:NEXT:PRINT #1,"ATH":GOTO 1840
- 4340 IF CHOICE < (MENULINES -2) THEN F$ = PHONENUMBERS$(CHOICE,1) ELSE 4350
- 4345 IF LEFT$(PHONENUMBERS$(CHOICE,0),1)<>"C" THEN DUPLEX$="F0" ELSE DUPLEX$="F1"
- 4347 IF AUTOLOG<>1 THEN 4350
- 4348 IF LEFT$(L$,1)<>"C" THEN DUPLEX$="F0" ELSE DUPLEX$="F1"
- 4350 NOW = 0
- 4360 C$="": PRINT: PRINT #1, "AT" + DUPLEX$ + "D" + F$
- 4370 IF LOC(1) = 0 THEN GOTO 4400
- 4380 C=ASC(INPUT$(1,1)) AND &H7F
- 4390 PRINT CHR$(C);: IF C>28 THEN C$= C$+CHR$(C)
- 4400 IF INSTR(C$, BAD1$) OR INSTR(C$, BAD2$) OR INSTR(C$, BAD3$) THEN NOW = NOW +1 ELSE 4405
- 4402 PRINT NOW:FOR I = 1 TO 4000: NEXT
- 4403 IF NOW>3 THEN AUTOLOG=0:GOTO 4220 ELSE 4360
- 4405 IF AUTOLOG=1 AND INSTR(C$,GOOD1$) THEN RETURN
- 4410 IF INSTR(C$, GOOD1$) THEN START! = TIMER: GOTO 1840
- 4420 IF ABS(MOUSE(0)) = 2 THEN GOTO 4220 ELSE GOTO 4370
- 4430 CLOSE #1:IF BR! = 300 THEN BR! = 1200 ELSE BR! = 300
- 4435 GOTO 1430
- 4440 IF RCVXFLAG=TRUE THEN RCVXFLAG=FALSE:RCVXFLAG$=" NONE":GOTO 4220
- 4445 RCVXFLAG=TRUE:RCVXFLAG$="X-ON/X-OFF":GOTO 4220
- 4450 CLS: C$="":CALL MOVETO (130, 50+ (15* MENULINES))
- 4455 LINE INPUT "NAME OF FILE TO READ: ", F$: IF F$="" THEN 4220
- 4460 ON ERROR GOTO 4530
- 4465 CALL MOVETO(130,70+(15*MENULINES)):PRINT "LINE PRINTER? <Y/N>"
- 4467 C$=INKEY$:IF C$="" THEN 4467
- 4468 IF (C$<>"Y") AND (C$<>"Y") AND (C$<>"N") AND (C$<>"N") THEN 4467
- 4469 IF (C$="Y") OR (C$="Y") THEN WIDTH "LPT1:",255:LPRINT PAGELENGTH$;
- 4470 OPEN F$ FOR INPUT AS #2
- 4475 CALL TEXTSIZE(9): CALL TEXTFONT(4)
- 4480 WHILE NOT EOF(2)
- 4490 LINE INPUT #2, XL$: IF (C$="N") OR (C$="N") THEN PRINT XL$ ELSE PRINT XL$:LPRINT XL$
- 4500 WEND
- 4502 IF (C$="Y") OR (C$="Y") THEN LPRINT CHR$(12)+PRINTER0FF$
- 4505 C$=""
- 4510 CLOSE #2:CALL TEXTSIZE(12): CALL TEXTFONT(0)
- 4515 PRINT: PRINT "DOUBLE-CLICK TO CONTINUE. ": GOSUB 5090
- 4520 ON ERROR GOTO 0: GOTO 4220
- 4530 CLOSE #2: PRINT "NO SUCH FILE. AVAILABLE FILES ARE:": FILES: GOSUB 5080
- 4540 IF MOUSE(0) <> 0 THEN 4540
- 4550 RESUME 4450
- 4560 CLOSE
- 4570 CALL TEXTFONT(3): CALL TEXTFACE(0): CALL TEXTSIZE(12): CALL TEXTMODE (0)
- 4580 CALL MOVETO (70, 50 + (15*MENULINES)): PRINT "BACK TO BASIC."
- 4585 PRINT PTAB(70) "RESETTING HEAP.": CLEAR, 19000: END
- 4590 CLOSE: SYSTEM
- 4600 REM TIMER FUNCTIONS
- 4610 START! = TIMER: GOTO 4220
- 4620 PRINT #1, XON$: CLS
- 4625 CALL TEXTSIZE(12): CALL TEXTFONT(0)
- 4630 PRINT "DOUBLE-CLICK THE MOUSE TO RETURN TO THE MENU": PRINT
- 4640 PRINT " CMD-D PRINTS THE ACTIVE WINDOW"
- 4650 PRINT " OPT-T STARTS AND STOPS ASCII TRANSMIT (UPLOAD)."
- 4660 PRINT " OPT-R STARTS AND STOPS ASCII RECEIVE (DOWNLOAD)."
- 4670 PRINT " OPT-B STARTS AND STOPS ASCII BASIC RECEIVE"
- 4680 PRINT " (LINES NOT BEGINNING WITH A DIGIT ARE IGNORED)."
- 4690 PRINT: PRINT
- 4700 GOTO 1840
- 4710 IF WHICHMENU = 1 THEN RESTORE 4970 'MAIN MENU
- 4715 IF WHICHMENU = 3 THEN RESTORE 5000 'AUTOLOG MENU
- 4720 CLS: CALL MOVETO (60,20): I =0: BLACK = 0
- 4730 READ MENU$(I)
- 4740 IF MENU$(I) = "-1" THEN MENULINES = I-1 ELSE I=I+1: GOTO 4730
- 4750 PRINT MENU$(0) TAB(33) "FREESPACE=";FRE(0);" BYTES": ' TITLE
- 4760 IF WHICHMENU = 1 THEN CALL MOVETO (310, 75): PRINT "("; BR!;")"; ELSE 4775
- 4765 CALL MOVETO(300,90):PRINT RCVXFLAG$
- 4770 CALL MOVETO (275, 135): FINISH! = TIMER
- 4772 PRINT INT((FINISH! - START!)/60*100)/100; "MINUTES";
- 4775 CALL TEXTMODE(1)
- 4780 FOR I = 1 TO MENULINES: CALL MOVETO (100, 30 + (15*I))
- 4785 IF WHICHMENU=1 OR WHICHMENU = 3 THEN PRINT MENU$(I)
- 4790 IF WHICHMENU=2 OR WHICHMENU=5 THEN PRINT PHONENUMBERS$(I,0) TAB(40) PHONENUMBERS$(I,1)
- 4792 NEXT I
- 4795 CALL TEXTMODE(0)
- 4800 CALL MOVETO (70, 50 + (15*MENULINES)): PRINT "CLICK YOUR CHOICE."
- 4810 ' ROUTINE TO PRINT BOXES AND GET COMMAND
- 4820 SQUEAK= MOUSE(0): WHERE = MOUSE(2)
- 4830 IF WHERE > 38 AND WHERE < (20 + (15*I)) THEN INRANGE = TRUE ELSE INRANGE = FALSE
- 4840 IF SQUEAK AND BLACK THEN CHOICE = BLACK: RETURN
- 4850 IF NOT INRANGE AND (BLACK = 0) THEN 4820
- 4860 IF NOT INRANGE AND (BLACK <> 0) THEN GOSUB 4920: BLACK = 0: GOTO 4820
- 4870 IF INRANGE THEN NOW = INT(WHERE - 20)\15
- 4880 IF NOW = BLACK THEN 4820 : ' NO NEED TO CHANGE IF ON A BLACKENED LINE
- 4890 IF BLACK = 0 THEN BLACK = NOW: GOSUB 4920: GOTO 4820
- 4900 GOSUB 4920: BLACK = NOW: GOSUB 4920: GOTO 4820: ' WHITEN, THEN BLACKEN
- 4910 ' SUBROUTINE TO BLACKEN AND WHITEN BOXES
- 4920 TOP = 18 + BLACK*15: BOTTOM = TOP + 14
- 4930 CALL PENMODE (10)
- 4940 LINE(96, TOP) - (380, BOTTOM),,BF
- 4950 RETURN
- 4960 ' DATA FOR MENUS
- 4970 DATA MAIN MENU, AUTODIAL, AUTO LOGON, RESET BAUD RATE, RECEIVE HANDSHAKING
- 4980 DATA EXIT TO BASIC, EXIT TO SYSTEM, RESET TIMER, EDIT PHONE NUMBERS,VIEW/PRINT FILE
- 4990 DATA RETURN TO TERMINAL MODE, "-1"
- 5000 DATA AUTOLOG MENU
- 5010 DATA COMPUSERVE xxx-xxxx
- 5015 DATA " (MODIFY LINE NOS. 5010,5225,5250,5260)"
- 5020 REM INSERT ADDITIONL AUTOLOG DATA HERE.
- 5070 DATA RETURN TO TERMINAL MODE,-1
- 5080 CALL MOVETO (180, 50 + (15* MENULINES)): PRINT "DOUBLE-CLICK TO PROCEED";
- 5090 SQUEAK = MOUSE(0)
- 5100 IF ABS(SQUEAK) = 2 THEN RETURN ELSE GOTO 5090
- 5200 REM AUTO LOGON SECTION
- 5210 WHICHMENU=3: GOSUB 4710
- 5220 CLS: ON CHOICE GOTO 5225,4620,4620
- 5225 AUTOLOG=1:L$="COMPUSERVE":F$="xxx-xxxx":GOSUB 4348
- 5230 AUTOLOG=0:L$="":START!=TIMER:A!=0
- 5235 PRINT #1,CHR$(3);
- 5238 WHILE (L$ <> ":") AND (A!<=15) :IF LOC(1)=0 THEN 5239 ELSE L$=INPUT$(1,#1):GOSUB 5500
- 5239 A!=TIMER-START!:WEND
- 5240 IF A!>15 THEN PRINT:PRINT "COMPUSERVE TOOK TOO LONG TO RESPOND":FOR I=1 TO 5000:NEXT: GOTO 4620
- 5250 PRINT #1,"xxxxx,xxxx" ' USER NUMBER
- 5260 L$="":WHILE L$ <> ":":L$=INPUT$(1,#1):GOSUB 5500:WEND:PRINT #1,"xxxxxxxxxxx" ' PASSWORD
- 5270 L$="":WHILE L$ <>"C":L$=INPUT$(1,#1):GOSUB 5500:WEND
- 5280 BEEP:AUTOLOG=0:BEEP:START!=TIMER:BEEP:GOTO 1840
- 5300 REM INSERT ADDITIONAL AUTOLOG ROUTINES HERE.
- 5500 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
- 5510 IF TL<>0 THEN PRINT LEFT$(L$,TL);
- 5520 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
- 5530 RETURN
- 5600 REM CHANGE PHONE NUMBERS
- 5610 WHICHMENU=5: GOSUB 6020
- 5620 MENULINES=XL+1:PHONENUMBERS$(MENULINES,0)="ADD A NEW NUMBER."
- 5630 MENULINES=XL+2:PHONENUMBERS$(MENULINES,0)="SAVE NUMBERS."
- 5640 MENULINES=XL+3:PHONENUMBERS$(MENULINES,0)="RETURN TO MENU."
- 5650 CLS: CALL MOVETO(60,20):BLACK=0:MENU$(0)="EDIT PHONE NUMBERS MENU":GOSUB 4750: C=CHOICE
- 5660 IF CHOICE = MENULINES THEN 4220
- 5670 IF CHOICE = (MENULINES - 2) THEN 5740
- 5680 IF CHOICE = (MENULINES - 1) THEN GOSUB 5780:GOTO 5600
- 5690 PRINT:PRINT "CURRENT NAME:" PTAB(200) PHONENUMBERS$(C,0)
- 5700 PRINT " NEW NAME (OR DELETE)":PRINT " <RETURN> = NO CHANGE:" PTAB (200);
- 5702 LINE INPUT "",L$:IF L$="" THEN 5715 ELSE PHONENUMBERS$(C,0)=L$
- 5705 IF PHONENUMBERS$(C,0)="DELETE" OR PHONENUMBERS$(C,0)="DELETE" THEN 5707
- 5706 IF PHONENUMBERS$(C,0)<>"DELETE" THEN 5715
- 5707 PHONENUMBERS$(C,0)="":PHONENUMBERS$(C,1)=""
- 5708 FOR I=C TO XL-1:PHONENUMBERS$(I,0)=PHONENUMBERS$(I+1,0)
- 5709 PHONENUMBERS$(I,1)=PHONENUMBERS$(I+1,1):NEXT
- 5710 PHONENUMBERS$(XL,0)="":PHONENUMBERS$(XL,1)=""
- 5712 XL=XL-1:GOTO 5600
- 5715 PRINT:PRINT "CURRENT NUMBER:" PTAB(200) PHONENUMBERS$(C,1)
- 5720 PRINT " NEW NUMBER":PRINT " <RETURN> = NO CHANGE:" PTAB(200);
- 5725 LINE INPUT "",L$:IF L$="" THEN 5600 ELSE PHONENUMBERS$(C,1)=L$
- 5730 GOTO 5600
- 5740 XL=XL+1: IF XL=9 THEN XL=8 ELSE 5750
- 5745 PRINT:PRINT "SORRY - ONLY 8 NUMBERS ALLOWED.":FOR I=1 TO 3000: NEXT :GOTO 5600
- 5750 PRINT:PRINT "NEW NAME:" PTAB(200);:LINE INPUT "",PHONENUMBERS$(XL,0)
- 5755 IF PHONENUMBERS$(XL,0)="" THEN XL=XL-1: GOTO 5600
- 5760 PRINT:PRINT "NEW NUMBER:" PTAB(200);:LINE INPUT "",PHONENUMBERS$(XL,1)
- 5765 IF PHONENUMBERS$(XL,1)="" THEN XL=XL-1:GOTO 5600
- 5770 GOTO 5600
- 5780 OPEN "MODEM.NUMBERS" FOR OUTPUT AS #8
- 5790 FOR I=1 TO XL
- 5800 IF PHONENUMBERS$(I,0) <> "" THEN PRINT #8, PHONENUMBERS$(I,0): PRINT #8,PHONENUMBERS$(I,1)
- 5810 NEXT
- 5820 CLOSE #8:RETURN
- 6010 GOSUB 6020: GOTO 6110
- 6020 IF PHONENUMBERS$(1,0) <> "" AND PHONENUMBERS$(1,1) <> "" THEN MENULINES=XL:GOTO 6100
- 6030 ON ERROR GOTO 6160
- 6040 OPEN "MODEM.NUMBERS" FOR INPUT AS #9
- 6050 FOR I=1 TO 8:IF EOF(9) THEN XL=I-1:GOTO 6090
- 6060 LINE INPUT #9, PHONENUMBERS$(I,0):IF EOF(9) THEN XL=I-1:GOTO 6090
- 6070 LINE INPUT #9, PHONENUMBERS$(I,1):MENU$(I)=PHONENUMBERS$(I,1)
- 6080 NEXT I :XL=8
- 6090 CLOSE #9
- 6100 RETURN
- 6110 MENULINES=XL+1:PHONENUMBERS$(MENULINES,0)="ENTER A NUMBER TO BE DIALED."
- 6120 MENULINES=XL+2:PHONENUMBERS$(MENULINES,0)="DISCONNECT."
- 6130 MENULINES=XL+3:PHONENUMBERS$(MENULINES,0)="RETURN TO MENU WITHOUT DIALING."
- 6140 CLS: CALL MOVETO(60,20):BLACK=0:I=0:MENU$(0)="PHONE NUMBER MENU": GOTO 4750
- 6160 IF ERL<>6040 THEN 6190
- 6170 OPEN "MODEM.NUMBERS" FOR OUTPUT AS #8: CLOSE #8
- 6180 RESUME
- 6190 ON ERROR GOTO 0
- 7220 REM SET COMM HANDSHAKE PARAMETERS
- 7230 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
- 7240 PARAMLIST(24\2)=AIN
- 7250 PARAMLIST(26\2)=10
- 7260 POKE PARAM!+28,OUTXENAB
- 7270 POKE PARAM!+29,0
- 7280 POKE PARAM!+30,XON
- 7290 POKE PARAM!+31,XOFF
- 7300 POKE PARAM!+32,0
- 7310 POKE PARAM!+33,0
- 7320 POKE PARAM!+34,0
- 7330 CALL CONTROL!(PARAM!)
- 7360 RETURN
- 8000 REM SUBROUTINE TO SET TYPE AND APPLICATION OF A FILE
- 8020 FL=LEN(F$)
- 8030 F$=CHR$(FL)+F$
- 8040 FOR I=0 TO 79: POKE PARAM!+I,0: NEXT I
- 8050 POKE PARAM!+19,PEEK(FP!+2)
- 8060 POKE PARAM!+20,PEEK(FP!+3)
- 8070 POKE PARAM!+21,PEEK(FP!+4)
- 8080 CALL GETFILEINFO!(PARAM!)
- 8090 FOR I=1 TO 8
- 8100 POKE PARAM!+31+I,ASC(MID$(TYPEAPPL$,I,1))
- 8110 NEXT I
- 8120 CALL SETFILEINFO!(PARAM!)
- 8130 RETURN
- 9020 DATA "1C000000000A0024007600FC01164E56FFF848EE0101FFF8206E0008A0044CEEEF"
- 9030 DATA "1C001C000101FFF84E5E4E754E56FFE848EE0707FFE8226E000C42811219E181BE"
- 9040 DATA "1C003800121942821419E1821419E182141920422248246E001042824A4167123A"
- 9050 DATA "1C0054004280101812B20000670452895282534166F0206E000830824CEE07074E"
- 9060 DATA "1C007000FFE84E5E4E754E56FFE048EE1F07FFE0206E0014548842801018E18097"
- 9070 DATA "1C008C001018E180101820402248246E0010266E000C286E0008321242824A416A"
- 9080 DATA "1C00A800674610180C00000D661A4A546708425436BC0001602E4A53662A36BC8B"
- 9090 DATA "1C00C400000112C0524260204A54661C4A5367120C0000306D060C0000396F069A"
- 9100 DATA "1C00E00038BC00016006425312C05242534166BA34824CEE1F07FFE04E5E4E7596"
- 9110 DATA "1C00FC004E56FFF848EE0101FFF8206E0008A00C4CEE0101FFF84E5E4E754E5696"
- 9120 DATA "18001801FFF848EE0101FFF8206E0008A00D4CEE0101FFF84E5E4E75C4"
- 9130 DATA "000000000000"
- 9580 END
-
- M
- E4E754E56